/*
 * Client.h
 *
 *  Created on: Nov 4, 2011
 *      Author: gonzalo
 */

#ifndef CLIENT_H_
#define CLIENT_H_

#include "../Sockets/ConexionCliente.h"
#include "../../Server/BattleMasterPlayerGame.h"
#include "../../Server/ColaMensajeEnviar.h"
#include "../../Server/ColaMensajeRecibir.h"
#include "../../SDLtoolkit/SDLEngine.h"
#include "UsersTanks.h"
#include "../../SDLtoolkit/Window.h"
#include "../../Server/ColaMensajesSDL.h"
#include "../Notifier/ClientNotifier.h"

class Client : public Thread{
public:
	Client(std::string id,std::string host,SocketProtocoloPlano* socket,SDLEngine* engine);
	virtual ~Client();

	void setMensaje(DTO* dto);

	void terminar();

protected:
	virtual void* run();

private:
	void handleMensaje(DTO* dto);

	DTO* getTankDTO();

	BattleMasterPlayerGame* game;

	UsersTanks* jugadores;

	ColaMensajeEnviar* enviar;
	ColaMensajeRecibir* recibir;
	ConexionCliente* conexion;

	ColaMensajesSDL* mensajesSDL;

	SDLEngine* engine;

	ClientNotifier* clientNotifier;

	std::string id;

	bool conexionActiva;

};

#endif /* CLIENT_H_ */
